会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132657个问题

#encoding=utf-8

from tkinter import *
from tkinter.colorchooser import *
from tkinter.filedialog import *

class Application(Frame):
    def __init__(self, master = None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.createWidget()
    def createWidget(self):
        # 创建主菜单栏
        menubar = Menu(root)

        # 创建子菜单
        menuFile = Menu(menubar)
        menuEdit = Menu(menubar)
        menuHelp = Menu(menubar)

        # 将子菜单加入到主菜单栏
        menubar.add_cascade(label='文件(F)', menu=menuFile)
        menubar.add_cascade(label='编辑(E)', menu=menuEdit)
        menubar.add_cascade(label='帮助(H)', menu=menuHelp)

        # 添加菜单项
        menuFile.add_command(label='新建', accelerator='ctrl + n', command=self.test)
        menuFile.add_command(label='打开', accelerator='ctrl + o', command=self.test)
        menuFile.add_command(label='保存', accelerator='ctrl + s', command=self.test)
        menuFile.add_separator()  # 添加分割线
        menuFile.add_command(label='退出', accelerator='ctrl + q', command=self.test)

        # 将主菜单栏加到跟窗口
        root['menu'] = menubar

        # 创建上下文菜单
        menubar2 = Menu(root)
        menubar2.add_command(label='颜色', command = self.openAskColor)

        menuedit = Menu(menubar2, tearoff = 0)
        menuedit.add_command(label='剪切')
        menuedit.add_command(label='复制')
        menuedit.add_command(label='粘贴')

        menubar2.add_cascade(label='编辑', menu=menuedit)

        # 编辑区
        w1 = Text(root, width=50, height=30)
        w1.pack()
        w1.bind('<Button-3>', text)
    def test(self):
        pass

    def openAskColor(self):
        s1 = askcolor(color='red', title='选择背景色')
        root.config(bg=s1[1])

    def test1(event):
        # 菜单在鼠标右键单击的坐标处显示
        menubar2.post(event.x_root, event.y_root)


if __name__ == "__main__":
    root = Tk()
    root.title('my window');root.geometry('450x300')
    app = Application(master = root)
    root.mainloop()

老师:问题很多,视频七分钟,百度两小时

  1. 如图,菜单栏虚线可以点击,并且点击后新弹出个窗口

image.png

2.这些地方是调用组件么。组件第一个字母不都是大写

image.png


3.我这里总是显示这样的,不知道为什么

image.png

Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 2297楼

#encoding=utf-8

from tkinter import *
import random
class Application(Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master=master
        self.pack()
        self.createWidget()

    def createWidget(self):
        self.canvas = Canvas(self, width=800, height=600, bg='green')
        self.canvas.pack()
        # 画一条直线
        self.line = self.canvas.create_line(10, 10, 30, 20, 40, 50)    # 坐标(10,10),(30,20),(40,50)
        # 画一个矩形
        self.rect = self.canvas.create_rectangle(50, 50, 100, 100)     # 左上角坐标(50, 50) 右下角坐标(100,100)
        # 画一个椭圆,坐标两双,为椭圆的边界矩形左上角和右下角
        self.oval = self.canvas.create_oval(50, 50, 100, 100)           # 绘制如上巨星的内切圆

        #global photo
        self.photo = PhotoImage(file="000.gif")
        self.canvas.create_image(550, 100, image=self.photo)

        Button(self, text='随机画出十个矩形', command=self.draw50Recg).pack(side='left')

    def draw50Recg(self):
        for i in range(0, 10):
            x1 = random.randrange(int(self.canvas['width'])/2)
            y1 = random.randrange(int(self.canvas['height'])/2)
            x2 = x1 + random.randrange(int(self.canvas['height'])/2)
            y2 = y1 + random.randrange(int(self.canvas['height'])/2)
            self.canvas.create_rectangle(x1, y1, x2, y2)

if __name__=="__main__":
    root = Tk()
    root.title('my window')
    root.geometry('500x300')
    app = Application(master=root)
    root.mainloop()

image.png

  1. 老师,为啥视频里,这里没有加self呢,我自己加上之后没啥区别。不加的化,这个变量就是灰色的,

  2. 为什么这里画一个图形啥的 不需要调用pack()呢

Python 全系列/第二阶段:Python 深入与提高/GUI编程(隐藏) 2307楼
Python 全系列/第二阶段:Python 深入与提高/文件处理 2310楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637