Первый: Как сделать родительское окно полностью неактивным (не принимающим ввод от пользователя и не дающим переключить себя на топлевел) при вызове дочернего?
Второй: Как запретить изменение размера для окна?
EnchantnerЯ пробовал с родителем QWidget и ребенком QDialog. Как ты QWidget окном сделал, можешь кусок кода показать? Может применяешь модальность не к тому?
У меня родительское окно типа QMainWindow, а дочернее - QWidget. Твой пример запускается без ошибок, но не работает smile Или я что-то не так делаю…
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Window(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.button = QPushButton(self)
self.button.clicked.connect(self.add)
def add(self):
modal = QDialog(self)
modal.setWindowModality(Qt.ApplicationModal)
modal.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
window.resize(200, 50)
sys.exit(app.exec_())
villagerсорри…ввел в заблуждение…
1)вроде никак
но можно сделать его setDisabled(True)
A modal window is one that blocks input to other windows. Note that windows that are children of a modal window are not blocked.QMainWindow - children QWidget.
#!/usr/bin/env python2.6
# coding: utf-8
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MainWindow(QWidget):
def __init__(self):
QWidget.__init__(self)
# главное окно - QWidget
self.setWindowTitle("MainWindow")
self.resize(300,100)
# дочерний widget теперь - это QMainWindow
self.modal = QMainWindow(self)
self.modal.setWindowTitle("Widget")
self.modal.show()
self.pushButton=QPushButton(self)
self.connect(self.pushButton, SIGNAL("clicked()"), self.set_modal)
def set_modal(self):
self.modal.hide()
self.modal.setWindowModality(Qt.WindowModal)
self.modal.show()
if __name__=='__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Window(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.button = QPushButton(self)
self.button.clicked.connect(self.add)
def add(self):
self.modal = QWidget()
self.modal.setFixedSize(100, 100)
self.modal.setWindowModality(Qt.ApplicationModal)
self.modal.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
window.resize(200, 50)
sys.exit(app.exec_())