会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132428个问题
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 33363楼
JAVA 全系列/(旧的隐藏)第七阶段:JAVA 高级技术/Linux 33364楼
Python 全系列/第二十三阶段:人工智能基础_机器学习理论和实战(旧)/代码实战梯度下降法与优化 33365楼
Python 全系列/第二十三阶段:人工智能基础_机器学习理论和实战(旧)/代码实战梯度下降法与优化 33367楼

老师,问题如下图:

ZB0SM8]]BI(Z@SUJTN605ZW.png

from tkinter import *
from tkinter import messagebox
import webbrowser


class Application(Frame):
    '''一个经典的GUI程序的类的写法'''

    def __init__(self, master=None):
        super(Application, self).__init__(master)           #super()代表的是父类的定义,而不是父类的对象/虽然继承了Frame,但不会调用Frame的构造器
        self.master = master
        self.pack()
        self.createwidget()                #需要创建多个窗口对象时,需要调用此


    def createwidget(self):
        '''创建组件'''
        self.w1 = Text(root, width=40, height=12, bg='gray')  #40列字符  12行字符的高度
        #宽度 20个字母(10个汉字),高度一个行高
        self.w1.pack()

        self.w1.insert(1.0, '123456789\nabcdefg')
        self.w1.insert(2.3, '锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦\n')

        Button(self, text='重复插入文本', command=self.insertTest).pack(side='left')  #若写’left‘,默认垂直排列
        Button(self, text='返回文本', command=self.returnTest).pack(side='left')
        Button(self, text='添加图片', command=self.addImage).pack(side='left')
        Button(self, text='添加组件', command=self.addWidget).pack(side='left')
        Button(self, text='通过tag精确控制文本',command=self.bindTag).pack(side='left')


        def insertTest(self):
            # INSERT 索引表示在光标处插入
            self.w1.insert(INSERT, 'gaoqi')
            # END索引号表示在最后插入
            self.w1.insert(END, '[sxt]')
            self.w1.insert(1.8, 'gaoqi')

        def retuRntest(self):
            # Indexes(索引)是用来指向Text组件中的文本的位置,Text组件索引也是对应实际字符之间的位置
            # 核心:行号以1开始,列好以0开始
            print(self.w1.get(1.2, 1.6))
            print('所有文本内容:\n'+self.w1.get(1.0, END))  # 将文本内容返回到Run框中

        def addImage(self):
            global photo
            self.photo = PhotoImage(file='imgs/星球.gif')
            self.w1.image_create(END, image=self.photo)

        def addWidget(self):   #增加组件
            b1 = Button(self.w1, text='爱尚学堂')
            #在text 创建组件的命令
            self.w1.window_create(INSERT, window=b1)

        def bindTag(self):
            self.w1.delete(1.0,END)
            self.w1.insert(INSERT, 'good good study,day day up!\n北京尚学堂\n'
                                   '百战程序员\n百度,搜一下就知道')
            self.w1.tag_add('good', 1.0, 1.9)      #给’1.0‘到’1.9‘增加一个标记,’good‘或其他也可以
            self.w1.tag_config('good', background='yellow', foreground='red')
            #config 给标记处增加配置

            self.w1.tag_add('baidu', 4.0, 4.2)
            self.w1.tag_config('baidu', underground=True)   #加了下划线
            self.w1.tag_bind('baidu', '<Button-1>', self.webshow)
            #bind 绑定事件

        def webshow(self, event):
            webbrowser.open('http://www.baidu.com')


if __name__=='__main__':     # 规范写法,作为独立的个体去调用
    root = Tk()
    root.geometry('400x300+200+300')
    app = Application(master=root)
    root.mainloop()


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

老师,您好,问题如下图片:


48OZ(1Y`%G0ID~VPZ]WJX7R.png

from tkinter import *
from tkinter import messagebox


class Application(Frame):
    '''一个经典的GUI程序的类的写法'''

    def __init__(self, master=None):
        super().__init__(master)           #super()代表的是父类的定义,而不是父类的对象/虽然继承了Frame,但不会调用Frame的构造器
        self.master = master
        self.pack()
        self.createwidget()                #需要创建多个窗口对象时,需要调用此


    def createwidget(self):
        self.CodeHobby = IntVar()
        self.videoHobby = IntVar()

        print(self.CodeHobby.get())  #默认值为零
        self.c1 = Checkbutton(self, text='敲代码', variable
         =self.CodeHobby, onvalue=1, offvalue=0)

        self.c2 = Checkbutton(self, text='看视频', variable
         =self.videoHobby, onvalue=1, offvalue=0)

        self.c1.pack(side='left')
        self.c2.pack(side='left')

        Button(self, text='确定', command=self.confirm).pack(side='left')

        def confirm(self):
            if self.videoHobby.get() == 1:
                messagebox.showinfo('测试', '看视频,都是正常人有的爱好!你喜欢看什么类型?')
            if self.CodeHobby.get() == 1:
                messagebox.showinfo('测试', '抓获野生程序员一只,赶紧送他去尚学堂的视频充饥!')
            print('1')




if __name__=='__main__': #规范写法,作为独立的个体去调用
    root = Tk()
    root.geometry('200x100+200+300')
    app = Application(master=root)
    root.mainloop()


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

查找各部门薪资最低的雇员,并显示雇员的名字,薪水,部门ID。

这一题视频中的解答有问题。各部门薪水最低的雇员的薪资应该是唯一的,但是视频中解答的SQL的输出结果如下:

SQL> select last_name,salary,department_id from employees where salary in (select min(salary) 
from employees group by department_id) order by department_id;
LAST_NAME                     SALARY DEPARTMENT_ID
------------------------- ---------- -------------
Whalen                       4400.00            10
Fay                          6000.00            20
Colmenares                   2500.00            30
Mavris                       6500.00            40
Olson                        2100.00            50
Patel                        2500.00            50
Vargas                       2500.00            50
Marlow                       2500.00            50
Vollman                      6500.00            50
Perkins                      2500.00            50
Sarchand                     4200.00            50
Sullivan                     2500.00            50
Lorentz                      4200.00            60
Ernst                        6000.00            60
Baer                        10000.00            70
Kumar                        6100.00            80
Bloom                       10000.00            80
Sewall                       7000.00            80
King                        10000.00            80
Tucker                      10000.00            80
LAST_NAME                     SALARY DEPARTMENT_ID
------------------------- ---------- -------------
Tuvault                      7000.00            80
De Haan                     17000.00            90
Kochhar                     17000.00            90
Popp                         6900.00           100
Gietz                        8300.00           110
Grant                        7000.00 
26 rows selected

以部门50为例有多个最低薪资,这个不符合逻辑。


我觉得这里要使用到关联子查询,如下:

SQL> select e1.last_name,e1.salary,e1.department_id from employees e1 where e1.department_id in(
  2      select distinct e2.department_id from employees e2
  3  ) and e1.salary=(
  4      select min(e3.salary) from employees e3 where e3.department_id=e1.department_id
  5  ) order by e1.department_id;
LAST_NAME                     SALARY DEPARTMENT_ID
------------------------- ---------- -------------
Whalen                       4400.00            10
Fay                          6000.00            20
Colmenares                   2500.00            30
Mavris                       6500.00            40
Olson                        2100.00            50
Lorentz                      4200.00            60
Baer                        10000.00            70
Kumar                        6100.00            80
De Haan                     17000.00            90
Kochhar                     17000.00            90
Popp                         6900.00           100
Gietz                        8300.00           110
12 rows selected

其中部门90出现两次是因为两人并列最低部门薪资。

SQL> select last_name,salary,department_id from employees where department_id=90;
LAST_NAME                     SALARY DEPARTMENT_ID
------------------------- ---------- -------------
King                        24000.00            90
Kochhar                     17000.00            90
De Haan                     17000.00            90


JAVA 全系列/第三阶段:数据库编程/SQL 语言 33370楼
JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 33371楼
JAVA 全系列/(旧的隐藏)第七阶段:JAVA 高级技术/Linux 33373楼
JAVA 全系列/第三阶段:数据库编程/SQL 语言 33374楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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