我建立在@Necronomicron答案,以便此代碼在矩形上工作。問題(至少對我來說)是font_size的計算沒有考慮到標籤的寬度,所以如果它太小,字母就不會在裏面。
我把它改爲:
def on_texture_size(self, *args):
try:
if not self.factor:
self.factor = [self.font_size/self.texture_size[0], self.font_size/self.texture_size[1]]
self.font_size0 = self.size[0] * self.scale_factor * self.factor[0]
self.font_size1 = self.size[1] * self.scale_factor * self.factor[1]
if self.font_size0 < self.font_size1:
self.font_size = self.font_size0
else:
self.font_size = self.font_size1
except ZeroDivisionError:
pass
這樣選擇的字體大小總是最小,確保了文本適合垂直和水平。我也沒有這個標籤(或按鈕在我的情況)後創作:
button1.bind(size=lambda x, y: button1.on_texture_size())
,使文本FONT_SIZE每一次更新按鈕的大小變化(當屏幕尺寸的變化,例如)
展完整的錯誤信息。有問題的行數 - 在代碼中標記此行。 – furas
錯誤意味着你使用了一些浮點型變量'somename'作爲函數'somename()' – furas
@furas我不好,我必須在沒有'()'的情況下使用它,儘管文檔中有其他說明。但無論如何,這是適合文本的好方法嗎? – Necronomicron