Форум сайта python.su
0
Столкнулся с такой проблемой: есть в сети несколько принтеров, пользователи работают в терминальном режиме, поэтому на сервере настроены несколько принтеров.
1-й принтер обозначен как “общесистемный” по умолчанию.
2-й принтер обозначен как по умолчанию “для текущего пользователя”.
Вот запускаю LibreOffice, там по умолчанию стоит второй принтер, что есть правильно.
Запускаю свою программу на питоне, почему-то каждый раз выбирает первый. Как вызвать принтер по умолчанию для текущего пользователя?
Офлайн
0
Может, надо где-то в переменных окружения настраивать? Python, Qt, PyQt собраны из исходников.
Офлайн
857
void QPrinter::setPrinterName ( const QString & name )
Офлайн
0
py.user.next
Задачка выглядит так: есть терминальный сервер. И множество пользователей. У каждого пользователя свой принтер.
Ivanov - PrinterHP1
Petrov - PrinterHP2
Sidorov - PrinterXerox1
Общесистемный по умолчанию - PrinterHP1. По умолчанию для каждого пользователя - согласно таблицы выше.
И часто принтеры и “тонкие клиенты” меняем в случае поломки. Выбранный принтер должен зависеть только от системных настроек.
Офлайн
857
#!/usr/bin/env python3 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()
[guest@localhost examples]$ ./t.py
Deskjet-F4200-series
True
x
False
[guest@localhost examples]$
VadyА где гарантия, что он не был выставлен до этого?
Вот запускаю LibreOffice, там по умолчанию стоит второй принтер, что есть правильно.
Отредактировано py.user.next (Июнь 24, 2015 08:55:49)
Офлайн
0
Запустил с заголовком:
#!/usr/bin/env python
$ ./printer.pyВыбран нужный принтер! Операционная система - АльтЛинукс 6.0, родной питон - 2,6
Brother-HL-2035-2
True
x
False
#!/usr/bin/env /usr/local/bin/python
$ ./printer.pyВыбран не тот принтер. Питон - 2.7, причем не родной, а собран из исходников. И Qt4 тоже, с более новой версией.
Brother-HL-2035
True
x
False
Офлайн
857
http://qt.developpez.com/doc/3.2/qprinter/
void QPrinter::setPrinterName ( const QString & name )
Sets the printer name to name.
The default printer will be used if no printer name is set.
Under X11, the PRINTER environment variable defines the default printer. Under any other window system, the window system defines the default printer.
Офлайн
0
py.user.nextКак и где?
Попробуй PRINTER прочитать/установить.
Офлайн
0
читать:
echo $PRINTER env | grep PRINTER
export PRINTER="Brother-HL-2035-2"
Офлайн
0
echo $PRINTERНичего не выводит.
export PRINTER=“Brother-HL-2035-2”смысл какой? Система многопользовательская, у каждого пользователя - свой принтер, настраиваемый на уровне системы.
Офлайн