Столкнулся с такой проблемой: есть в сети несколько принтеров, пользователи работают в терминальном режиме, поэтому на сервере настроены несколько принтеров.
1-й принтер обозначен как “общесистемный” по умолчанию.
2-й принтер обозначен как по умолчанию “для текущего пользователя”.
Вот запускаю LibreOffice, там по умолчанию стоит второй принтер, что есть правильно.
Запускаю свою программу на самосборном питоне2.7 (родной для ОС - 2.6), почему-то каждый раз выбирает первый. Как вызвать принтер по умолчанию для текущего пользователя?
ОС - АльтЛинукс СПТ 6.0, среда - GNOME 2.
Задачка выглядит так: есть терминальный сервер. И множество пользователей. У каждого пользователя свой принтер.
Ivanov - PrinterHP1
Petrov - PrinterHP2
Sidorov - PrinterXerox1
Общесистемный по умолчанию - PrinterHP1. По умолчанию для каждого пользователя - согласно таблицы выше.
И часто принтеры и “тонкие клиенты” меняем в случае поломки. Выбранный принтер должен зависеть только от системных настроек.
Запустил следующим скриптом (заголовок файла - см. ниже):
from PyQt4 import QtGui
import sys
class Window(QtGui.QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
p = QtGui.QPrinter()
print(p.printerName())
print(p.isValid())
p.setPrinterName('x')
print(p.printerName())
print(p.isValid())
self.setGeometry(800, 550, 250, 150)
self.setWindowTitle('Title')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Window()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Запустил с заголовком:
#!/usr/bin/env python
Получил:
$ ./printer.py
Brother-HL-2035-2
True
x
False
Выбран нужный принтер! Родной питон - 2,6
Запустил с заголовком:
#!/usr/bin/env /usr/local/bin/python
Получил:
$ ./printer.py
Brother-HL-2035
True
x
False
Выбран не тот принтер. Питон - 2.7, причем не родной, а собран из исходников. И Qt4 тоже, с более новой версией.
Как исправить? Искать в переменных окружения или надо пересобирать питон с каким-то ключом?