Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Вопрос по компонентам PyQt4 на примере QMessageBox [RSS Feed]

#1 Март 5, 2010 21:55:16

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по компонентам PyQt4 на примере QMessageBox

Привет всем!
Хочу сделать следующее:
1)Чтобы иконки в заголовке формы вообще не было видно и был виден только текст заголовка,
2)И чтобы крестик был не только неактивным,но и еще не был виден(короче чтобы его невозможно было даже нажать)
код такой:
#!/usr/bin/python/
#-*- coding: utf-8 -*-
from PyQt4 import QtGui
import sys

class My_Widget(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.resize(100,100)
buttons_kompanovka=QtGui.QVBoxLayout(self)
button_my=QtGui.QPushButton(“Войти”,self)
button_my2=QtGui.QPushButton(“Выйти”,self)
buttons_kompanovka.addWidget(button_my)
buttons_kompanovka.addWidget(button_my2)
button_my2.clicked.connect(sys.exit)
button_my.clicked.connect(zapysk)

class My_MessageBox(QtGui.QMessageBox):
def __init__(self):
QtGui.QMessageBox.__init__(self)
self.setWindowTitle(“Ошибка”)
self.setText(“Чтобы попробовать снова нажмите кнопку Повторить”)
self.setIcon(QtGui.QMessageBox.Warning)
self.addButton(“Повторить”,QtGui.QMessageBox.AcceptRole)

def zapysk():
my_forma=My_MessageBox()
my_forma.show()
my_forma.exec_()

app=QtGui.QApplication(sys.argv)
my_home=My_Widget()
my_home.show()
app.exec_()

Подскажите как сделать пункт 1 и 2



Отредактировано (Март 5, 2010 23:52:04)

Офлайн

#2 Март 6, 2010 09:24:01

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по компонентам PyQt4 на примере QMessageBox

В конструктор виджета можно передавать флаги, влияющие на его поведение. Точно помню, что можно убирать красный крестик, а на счет 1) не знаю. Это надо поискать в документации. А еще в примерах к PyQt есть интересная прога, которая показывает все варианты формирования окон/диалогов (где точно лежит не помню). Вобщем если порыть в этом направлении, то что-нибудь нужное обязательно найдется. Дерзайте.



Офлайн

#3 Март 6, 2010 10:10:18

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по компонентам PyQt4 на примере QMessageBox

dartNNN
В конструктор виджета можно передавать флаги, влияющие на его поведение. Точно помню, что можно убирать красный крестик, а на счет 1) не знаю. Это надо поискать в документации. А еще в примерах к PyQt есть интересная прога, которая показывает все варианты формирования окон/диалогов (где точно лежит не помню). Вобщем если порыть в этом направлении, то что-нибудь нужное обязательно найдется. Дерзайте.
Ок. Спасибо,буду пока копать про флаги!
А эта прога в самой документации PyQt как пример лежит?Если да то я скорее всего сам найду)))А если нет и ты вдруг вспомнишь,где эта чуда прога, кинь плиз ссылку))



Отредактировано (Март 6, 2010 10:12:57)

Офлайн

#4 Март 6, 2010 12:40:02

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопрос по компонентам PyQt4 на примере QMessageBox

Все решил проблему самостоятельно
Получил то что хотел и даже лучше)))Вот ссылки:
http://qt.nokia.com/doc/4.6/widgets-windowflags.html
http://stackoverflow.com/questions/2059359/how-to-remove-maximize-button-in-mac-os-x-tool-window-in-qt
и вот собственно где нашел то что надо:
http://www.qtcentre.org/threads/9348-Disable-Close-button-%28X%29-of-a-QDialog

Ну и вот код который вам понадобится чтобы реализовать пункты 1 и 2:
Всего то одна строчка)))
setWindowFlags(QtCore.Qt.FramelessWindowHint|QtCore.Qt.WindowTitleHint)



Отредактировано (Март 6, 2010 12:40:42)

Офлайн

#5 Март 7, 2010 21:04:21

villager
От:
Зарегистрирован: 2008-11-04
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по компонентам PyQt4 на примере QMessageBox

может кому пригодится:
мучался той же фигней, но окно в QMdiArea
для QMdiSubWindow все работает не так, как для обычных окон - текст меню не русифицируется, меню не отключается
с помощью QMdiArea.addSubWindow(widget, Qt.CustomizeWindowHint|Qt.WindowTitleHint|Qt.WindowCloseButtonHint) удалось убрать ненужные мне Min/Max команды, но Stay On Top убить не удалось
решил отложить до лучших времен, и только сейчас нашел выход: QMdiSubWindow.setSystemMenu(QMenu) - можно сделать ЛЮБОЕ меню

ЗЫ: рано радовался - побочные эффекты в виде прозрачного (есть только рамка) окна поверх моего. Тулбар под ним не работает. Пропадает при щелчке, после этого все работает как надо. Глюки…


еще ЗЫ: использовал setSystemMenu(None) - работает. Поживем пока так :)



Отредактировано (Март 7, 2010 21:32:45)

Офлайн

  • Начало
  • » GUI
  • » Вопрос по компонентам PyQt4 на примере QMessageBox[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version