专注于python tkinter中的窗口

时间:2021-02-23 11:10:05

标签: python tkinter

我按照此代码制作了多个窗口。

    apiService.fetchDocs().enqueue(new Callback<List<Doctor>>() {
        @Override
        public void onResponse( Call<List<Doctor>> call, Response<List<Doctor>> response ) {
            List<Doctor> doctors = new ArrayList<>();
            List<String> docs = new ArrayList<>();

            if( response.body() != null ){

                doctors.addAll(response.body());

                for( int i = 0; i <= doctors.size(); i++ ){
                    docs.add(doctors.get(i).getName());
                }

                ArrayAdapter<String> doctorsSpinner = new ArrayAdapter<>(getApplicationContext(), layout.simple_spinner_item, docs);
                doctorsSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                doctor.setAdapter(doctorsSpinner);
            }else{

                Toast.makeText(BookingActivity.this, "0 doctors have been retrieved. \nKindly, contact customer care", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure( Call<List<Doctor>> call, Throwable t ) {
            Toast.makeText(BookingActivity.this, "Error: "+t.toString(), Toast.LENGTH_SHORT).show();
        }
    });
}

假设我在第三个窗口中显示一个消息框,然后焦点更改到第一个窗口。为了解决这个问题,我使用 import tkinter as tk from tkinter import messagebox class Win1: def __init__(self, master): self.master = master self.master.geometry("400x300") self.show_widgets() def show_widgets(self): self.frame = tk.Frame(self.master) self.master.title("Window n.1") self.create_button("Click to open Window 2", Win2) self.create_button("Click to open Window 3", Win3) self.frame.pack() def create_button(self, text, _class): "Button that creates a new window" tk.Button( self.frame, text=text, command=lambda: self.new_window(_class)).pack() def new_window(self, _class): global win2, win3 try: if _class == Win2: if win2.state() == "normal": win2.focus() except: win2 = tk.Toplevel(self.master) _class(win2) try: if _class == Win3: if win3.state() == "normal": win3.focus() except: win3 = tk.Toplevel(self.master) _class(win3) def close_window(self): self.master.destroy() class Win2(Win1): def show_widgets(self): "A frame with a button to quit the window" self.master.title("Window 2") self.frame = tk.Frame(self.master, bg="red") self.quit_button = tk.Button( self.frame, text=f"Quit this window n. 2", command=self.close_window) self.quit_button.pack() self.create_button("Open window 3 from window 2", Win3) self.btn = tk.Button(self.frame, text="hello").pack() self.btn2 = tk.Button(self.frame, text="exit", command=root.destroy).pack() self.frame.pack() class Win3(Win2): def msg(self): messagebox.showinfo("box","message") self.master.focus() def show_widgets(self): self.master.title("Window 3") self.frame = tk.Frame(self.master, bg="green") self.quit_button = tk.Button( self.frame, text=f"Quit this window n. 3", command=self.close_window) self.label = tk.Label( self.frame, text="THIS IS ONLY IN THE THIRD WINDOW") self.btn2 = tk.Button(self.frame, text="exit", command=root.destroy).pack() self.btn3 = tk.Button(self.frame, text='messagebox', command=self.msg).pack() self.label.pack() self.frame.pack() root = tk.Tk() app = Win1(root) root.mainloop() 将焦点带回到第三个窗口,但是当第三个窗口关闭时,焦点转移到第一个窗口而不是第二个窗口。我该如何解决这个问题?

0 个答案:

没有答案
相关问题