2015-06-21 31 views
1

我試圖放置一個複選框和一些文本內的按鈕,但我很難得到按鈕來擴大足夠寬,以查看全文。PyQt QHBoxLayout裏面的QPushButton文本正在被截斷

enter image description here

self.check = QtGui.QCheckBox("long text", self) 
self.checkLayout = QtGui.QHBoxLayout() 
self.checkLayout.addWidget(self.check) 
self.checkButton = QtGui.QPushButton(None, self) 
self.checkButton.setLayout(self.checkLayout) 

我已經嘗試添加綿延的各種組合,設置大小政策,設置頁邊距和風格等,但還沒有任何運氣至今。

謝謝

回答

1

添加布局按鈕。將複選框放置在佈局中。看起來這是QWidget自動跟蹤其子小部件大小的唯一方法。 但QWidget不會自動調整其大小以適應其內容。您必須調用adjustSize函數來執行此操作。

class TestWidget(QtGui.QWidget): 
    def __init__(self, *args): 
     QtGui.QWidget.__init__(self, *args) 

     self.check = QtGui.QCheckBox("very very long text") 

     self.checkLayout = QtGui.QHBoxLayout() 
     self.checkLayout.addWidget(self.check) 

     self.checkButton = QtGui.QPushButton() 
     self.checkButton.setLayout(self.checkLayout) 
     self.checkButton.adjustSize() 

     self.checkButton.setParent(self) 

UPD:沒有與adjustSize問題。此功能不增加checkButton到屏幕後,工作對我來說,如果我把它叫做

# works 
self.checkButton.adjustSize() 
self.checkButton.setParent(self) 
# doesn't work 
self.checkButton.setParent(self) 
self.checkButton.adjustSize() 

我的解決方案,而不是調用adjustSize手工調整大小:

self.checkButton.setFixedSize(self.checkLayout.sizeHint()) 
+0

感謝您的回答。儘管如此,我仍然遇到了麻煩。當我調用setFixedSize()時,我可以在按鈕中正確地看到.size()更新(雖然sizehint仍然太小 - 我相信這是預期的),但它仍然顯示在小尺寸的屏幕上。我已經嘗試重新排序聲明和設置父母..任何想法? – Taran

+0

嗯,這裏有些奇怪的東西。我沒有設法重現你的麻煩。如果問題在sizeHint()函數中,我只能建議醜陋的猴子修補:'self.checkButton.sizeHint = self.checkButton.size'。 –