亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 rowspan 在 tkinter 中畫布未正確排列

使用 rowspan 在 tkinter 中畫布未正確排列

人到中年有點甜 2023-05-09 10:59:22
我在 python 中有一些代碼,主要使用庫 tkinter 進行 Hangman 游戲:from tkinter import *from PIL import ImageTk, Imageimport timepause=500class Graphics(Canvas):    pics = {        '1':'backgrounds/step1.png',        '2':'backgrounds/step2.png',        '3':'backgrounds/step3.png',        '4':'backgrounds/step4.png',        '5':'backgrounds/step5.png',        '6''backgrounds/step6.png',        '7':'backgrounds/step7.png',        '8':'backgrounds/step8.png',        '9':'backgrounds/step9.png',        '10':'backgrounds/step10.png',        '11':'backgrounds/step11.png',        '12':'backgrounds/step12.png'    }    def __init__(self, master):        self.width=500        self.height=550        Canvas.__init__(self, master, bg='saddle brown', width=self.width, height=self.height, highlightthickness=0)        # self.step = '1'        # self.createImage(self.step)    def createImage(self,picName,size=()):        if size==():            size=(self.width,self.height)        filename = self.pics[picName]        self.im = Image.open(filename)        self.resizePic(size)        self.img=ImageTk.PhotoImage(self.im)        self.pic = self.create_image(self.width/2,self.height/2,anchor=CENTER,\                                     image=self.img)    def resizePic(self,size):        self.im = self.im.resize(size,Image.ANTIALIAS)    def nextStep(self):        if self.step=='6':            self.after(pause, self.master.welcome)            return        self.step = str(int(self.step)+1)        self.delete(self.pic)        self.createImage(self.step)        self.after(pause, self.nextStep)就我的問題而言,不需要圖片。無論如何,我希望在停頓 1/2 秒后出現“歡迎”“到”“劊子手”這些詞。時機和一切都是正確的。然而,不是三個畫布正確地排列在“棕色矩形”旁邊,而是其中一個奇怪地居中在它的右邊,另外兩個在它下面。為什么會這樣?
查看完整描述

2 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

這是因為您忘記分配masterCanvas.__init__(...)內部TEXT.__init__()函數。

更改如下:

class TEXT(Canvas): 
   def __init__(self, master, width, height, text):
        Canvas.__init__(self, bg='black',width=width,height=height,highlightthickness=0)

到:

class TEXT(Canvas): 
   def __init__(self, master, width, height, text):
        Canvas.__init__(self, master, bg='black',width=width,height=height,highlightthickness=0)



查看完整回答
反對 回復 2023-05-09
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

你必須告訴你的框架它將有多少行。


改變:


class Hangman(Frame):


? ? def __init__(self, master):


? ? ? ? Frame.__init__(self, master)

? ? ? ? self.grid()

到:


class Hangman(Frame):


? ? def __init__(self, master):


? ? ? ? Frame.__init__(self, master)

? ? ? ? self.grid(rowspan=10)

原因是網格忽略了空行和空列。



查看完整回答
反對 回復 2023-05-09
  • 2 回答
  • 0 關注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號