君子好逑 发表于 2020-5-19 23:46:25

button

from tkinter import *

root = Tk()

root.title("居中的窗口")
screenWidth = root.winfo_screenwidth()# 获取显示区域的宽度
screenHeight = root.winfo_screenheight()# 获取显示区域的高度
width = 600# 设定窗口宽度
height = 400# 设定窗口高度
left = (screenWidth - width) / 2
top = (screenHeight - height) / 2

# 宽度x高度+x偏移+y偏移
# 在设定宽度和高度的基础上指定窗口相对于屏幕左上角的偏移位置
root.geometry("%dx%d+%d+%d" % (width, height, left, top))

def love():
    master = Toplevel()

    master.title("居中的窗口")
    screenWidth = master.winfo_screenwidth()
    screenHeight = master.winfo_screenheight()
    width = 600
    height = 500
    left = (screenWidth - width) / 2
    top = (screenHeight - height) / 2
    master.geometry("%dx%d+%d+%d" % (width, height, left, top))
    w = Label(master, image=lphoto)
    w.pack()
    Button(master,text='确定',command=master.quit).pack()
    mainloop()   


def dislove():
    master = Toplevel()
#    disphoto = PhotoImage(file=r"E:\P.py\课堂练习.py\tkinter\眼瞎.png")
   
#    textlabel=Label(master,text='你怕是眼瞎').pack()
   

    master.title("让你认清自己!!!")
    screenWidth = master.winfo_screenwidth()
    screenHeight = master.winfo_screenheight()
    width = 600
    height = 380
    left = (screenWidth - width) / 2
    top = (screenHeight - height) / 2
    master.geometry("%dx%d+%d+%d" % (width, height, left, top))
    w = Label(master, image=disphoto)
    w.pack()
    Button(master,text='确定',command=master.quit).pack()
    mainloop()


textlable = Label(root,text='祢豆子真漂亮')
textlable.pack()

lphoto = PhotoImage(file=r"E:\P.py\课堂练习.py\tkinter\喜欢.png")
disphoto = PhotoImage(file=r"E:\P.py\课堂练习.py\tkinter\眼瞎.png")
photo = PhotoImage(file=r"E:\P.py\课堂练习.py\tkinter\1.png")
w = Label(root, image=photo)
w.pack()

button1=Button(root,text='喜欢',command=love)
button2=Button(root,text='不喜欢',command=dislove)

button1.pack()
button2.pack()

mainloop()
为啥love和第三love的窗口需要点击两下button才能生效

Twilight6 发表于 2020-5-19 23:53:54

因为你用了两个 mainloop()

Twilight6 发表于 2020-5-19 23:54:31

这样即可:
from tkinter import *

root = Tk()

root.title("居中的窗口")
screenWidth = root.winfo_screenwidth()# 获取显示区域的宽度
screenHeight = root.winfo_screenheight()# 获取显示区域的高度
width = 600# 设定窗口宽度
height = 400# 设定窗口高度
left = (screenWidth - width) / 2
top = (screenHeight - height) / 2

# 宽度x高度+x偏移+y偏移
# 在设定宽度和高度的基础上指定窗口相对于屏幕左上角的偏移位置
root.geometry("%dx%d+%d+%d" % (width, height, left, top))


def love():
    master = Toplevel()

    master.title("居中的窗口")
    screenWidth = master.winfo_screenwidth()
    screenHeight = master.winfo_screenheight()
    width = 600
    height = 500
    left = (screenWidth - width) / 2
    top = (screenHeight - height) / 2
    master.geometry("%dx%d+%d+%d" % (width, height, left, top))
    w = Label(master, image=lphoto)
    w.pack()
    Button(master, text='确定', command=master.quit).pack()



def dislove():
    master = Toplevel()
    #    disphoto = PhotoImage(file=r"E:\P.py\课堂练习.py\tkinter\眼瞎.png")

    #    textlabel=Label(master,text='你怕是眼瞎').pack()

    master.title("让你认清自己!!!")
    screenWidth = master.winfo_screenwidth()
    screenHeight = master.winfo_screenheight()
    width = 600
    height = 380
    left = (screenWidth - width) / 2
    top = (screenHeight - height) / 2
    master.geometry("%dx%d+%d+%d" % (width, height, left, top))
    w = Label(master, image=disphoto)
    w.pack()
    Button(master, text='确定', command=master.quit).pack()
   


textlable = Label(root, text='祢豆子真漂亮')
textlable.pack()

lphoto = PhotoImage(file=r"1.png")
disphoto = PhotoImage(file=r"1.png")
photo = PhotoImage(file=r"1.png")
w = Label(root, image=photo)
w.pack()

button1 = Button(root, text='喜欢', command=love)
button2 = Button(root, text='不喜欢', command=dislove)

button1.pack()
button2.pack()

mainloop()

Twilight6 发表于 2020-5-19 23:55:20

Twilight6 发表于 2020-5-19 23:53
因为你用了两个 mainloop()

mainloop() 只留最后一个即可

君子好逑 发表于 2020-5-20 09:41:57

Twilight6 发表于 2020-5-19 23:55
mainloop() 只留最后一个即可

ok,我试试{:10_256:}

Twilight6 发表于 2020-5-20 09:44:42

君子好逑 发表于 2020-5-20 09:41
ok,我试试

对了忘记告诉你弥豆子 和 恋柱 都是我老婆{:10_297:}{:10_281:}

君子好逑 发表于 2020-5-20 09:53:54

Twilight6 发表于 2020-5-20 09:44
对了忘记告诉你弥豆子 和 恋柱 都是我老婆

???我有点蒙,大佬

君子好逑 发表于 2020-5-20 09:54:28

Twilight6 发表于 2020-5-20 09:44
对了忘记告诉你弥豆子 和 恋柱 都是我老婆

这种带隐藏的怎么打出来???

君子好逑 发表于 2020-5-20 09:55:02

Twilight6 发表于 2020-5-20 09:44
对了忘记告诉你弥豆子 和 恋柱 都是我老婆

咱们各论各的{:10_256:}

Twilight6 发表于 2020-5-20 09:55:42

君子好逑 发表于 2020-5-20 09:54
这种带隐藏的怎么打出来???

把字体颜色变白即可

刮刮卡:你好像也是福建的?

Twilight6 发表于 2020-5-20 09:56:26

君子好逑 发表于 2020-5-20 09:55
咱们各论各的

用鼠标刮开可以看得见字

君子好逑 发表于 2020-5-20 09:56:49

Twilight6 发表于 2020-5-20 09:55
把字体颜色变白即可

刮刮卡:你好像也是福建的?

不懂,嘿嘿嘿,一会下课我试试

Twilight6 发表于 2020-5-20 09:59:05

君子好逑 发表于 2020-5-20 09:56
不懂,嘿嘿嘿,一会下课我试试



Button 问题应该已经解决了,记得给个最佳哈哈

把文字颜色,和字体背景颜色设置同种即可

君子好逑 发表于 2020-5-20 10:48:58

Twilight6 发表于 2020-5-19 23:54
这样即可:

大佬,我想让程序循环起来,有什么好的方法吗

Twilight6 发表于 2020-5-20 10:56:55

君子好逑 发表于 2020-5-20 10:48
大佬,我想让程序循环起来,有什么好的方法吗

command=master.destroy
不用quit   quit 是直接把根窗口退了

君子好逑 发表于 2020-5-20 11:00:12

Twilight6 发表于 2020-5-20 10:56
不用quit   quit 是直接把根窗口退了

这是什么原理???为什么root窗口一直没退???

Twilight6 发表于 2020-5-20 11:02:22

君子好逑 发表于 2020-5-20 11:00
这是什么原理???为什么root窗口一直没退???

destroy是隐藏或者销毁组件的意思,在你代码中销毁的组件是顶层窗口组件,你在root重新点击就重新生成顶层窗口,你点确定又销毁

君子好逑 发表于 2020-5-20 11:07:22

Twilight6 发表于 2020-5-20 11:02
destroy是隐藏或者销毁组件的意思,在你代码中销毁的组件是顶层窗口组件,你在root重新点击就重新生成顶 ...

懂了{:10_256:}

Twilight6 发表于 2020-5-20 11:09:34

君子好逑 发表于 2020-5-20 11:07
懂了

{:10_297:}欢迎继续发帖提问~~

君子好逑 发表于 2020-5-20 11:10:34

Twilight6 发表于 2020-5-20 11:09
欢迎继续发帖提问~~

必须啊,作为菜逼选手就只能请求场外援助啊{:10_256:}
页: [1] 2
查看完整版本: button