2016-07-14 2 views
0

Это код, который я использую, и кнопка не отображается, и отображается только пустое окно. В консоли нет ошибок.PyQt5 PushButton не отображается

from PyQt5 import QtWidgets 
from PyQt5.QtWidgets import * 


import sys 

def start(): 
    app = QApplication(sys.argv) 
    w = QWidget() 
    w.resize(128,102) 
    w.move(0, 0) 
    w.setWindowTitle('Simple') 
    btn = QtWidgets.QPushButton("Hi") 
    btn.move(50, 50) 
    btn.resize(btn.sizeHint()) 
    w.show() 

    sys.exit(app.exec_()) 

start() 

Это окно показывает, что pic

ответ

3

Попробуйте пропускание родительского аргумента конструктора. Родительский аргумент заставляет кнопку быть владельцем Qt, а не PyQt. btn = QtWidgets.QPushButton("Hi", w) должен работать.

+0

Спасибо. Я новичок в PyQt. – silentcallz

0

Любой виджет вы хотите показать должен быть родительским, прямо или косвенно, к виджету вы хотите, чтобы появиться в.

Обычный способ сделать это, назначая виджет макета и добавления других виджетов или подслоев к нему.

widget = QtWidgets.QWidget() 
button = QtWidgets.QPushButton('Hi') 
layout = QtWidgets.QVBoxLayout(widget) # Parents layout to widget 
layout.addWidget(button) 
widget.show() 

В этом примере widget косвенно назначается в качестве родителя к button через layout

0
from PyQt5 import QtWidgets 
from PyQt5.QtWidgets import * 


import sys 

def start(): 
    app  = QApplication(sys.argv) 
    w  = QWidget() 
    w.resize(128,102) 
    w.move(0, 0) 
    w.setWindowTitle('Simple') 

    btn = QtWidgets.QPushButton (w) 
    btn.move(50, 50) 
    btn.resize(btn.sizeHint()) 
    btn.setText ('Hi') 

    w.show() 

    sys.exit(app.exec_()) 

start()