Хорошо, почитаю про этот centralWidget (я так понимаю, что он может являться несколькими обычными виджетами?). Спасибо
UPD:Оказывается, я как последний неудачник рисовал окно как QWidget, а не QMainWindow. Понятное дело, что теперь надо просто создать класс, который будет наследоваться от QMainWindow, и в него пихать centralWidget. Вопрос теперь в том, как это грамотно сделать. Чувствую, что придется реорганизовывать и рефакторить весь код, но хочу лишний раз посоветоваться: что с этим делать? Код прилагается
# -*- coding: utf-8 -*-
import handler
import sys
import base64
from PyQt4 import QtGui, QtCore
class Window (QtGui.QWidget):
def __init__ (self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.resize(500, 150)
self.center()
self.data = handler.read_file('themes.yaml')
self.create_widgets()
self.connect_signals()
def center(self):
screen = QtGui.QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width() - size.width()) / 2,\
(screen.height() - size.height()) / 2)
def create_widgets (self):
self.name_label = QtGui.QLabel(u'ФИО:')
self.group_label = QtGui.QLabel(u'Группа:')
self.name_input = QtGui.QLineEdit()
self.group_input = QtGui.QLineEdit()
self.group_input.setMaxLength(2)
self.subject_box = QtGui.QComboBox()
self.theme_box = QtGui.QComboBox()
self.ok_but = QtGui.QPushButton(u'Сохранить лог')
self.add_subjects()
#self.theme_box.hide()
#self.ok_but.hide()
sizer = QtGui.QGridLayout()
sizer.addWidget(self.name_label, 0, 0)
sizer.addWidget(self.name_input, 0, 1)
sizer.addWidget(self.group_label, 0, 2)
sizer.addWidget(self.group_input, 0, 3)
sizer.addWidget(self.subject_box, 1, 0, 1, 2)
sizer.addWidget(self.theme_box, 1, 2, 1, 2)
sizer.addWidget(self.ok_but, 2, 0, 1, 4)
self.setLayout(sizer)
def add_subjects (self):
for subject in self.data:
self.subject_box.addItem('%s' % subject)
def add_themes (self, subject):
for theme in self.data[subject]:
self.theme_box.addItem('%s' % theme)
def connect_signals (self):
self.connect(self.subject_box, QtCore.SIGNAL('activated(QString)'), self.selected_subject)
self.connect(self.ok_but, QtCore.SIGNAL('clicked()'), self.on_click)
def on_click (self):
#selected_subject = '%s' % self.subject_box.currentText().toUtf8()
selected_theme = '%s' % self.theme_box.currentText().toUtf8()
student_name = '%s' % self.name_input.text().toUtf8()
student_group = '%s' % self.group_input.text().toUtf8()
handler.Loger.save_log(selected_theme, student_name, student_group)
def selected_subject (self):
self.theme_box.clear()
self.theme_box.addItem(u'Выберите тему')
curr_subject = '%s' % self.subject_box.currentText().toUtf8()
curr_subject = curr_subject.decode('utf-8')
self.add_themes(curr_subject)
#self.theme_box.show()
#self.ok_but.show()
app = QtGui.QApplication(sys.argv)
dt = Window()
dt.show()
app.exec_()