Столкнувшись с проблемой переопределенного (True) метода в tkinter в Linux на основе Debian - PullRequest
0 голосов
/ 31 августа 2018

Я разрабатываю графический интерфейс с использованием Python tkinter в Linux на основе Debian .

Всякий раз, когда я удаляю строку заголовка окна root и toplevel, используя overrideredirect (True) метод Я сталкиваюсь с нижеуказанными проблемами .

  1. Поле ввода не работает ( не получает фокус / не получает ввод ), когда я нажимаю на него.
  2. Всякий раз, когда я использую клавишу Alt + Tab, фокусируется только она.
  3. Затем я должен удерживать нажатой левую или правую кнопку мыши в нажатом положении, тогда только поле ввода принимает ввод, в противном случае ввод записывается в окне терминала.

Может ли кто-нибудь предложить альтернативный способ удаления заголовка заголовка или скрытия строки заголовка в tkinter в системе на основе Linux. Этот код хорошо работает в системе Windows.

Возник вопрос Переадресация Tkinter предотвращает определенные события в Mac и Linux , что похоже на мою проблему, но я не смог найти ее решение.

from tkinter import *

class GuiApp:
    def __init__(self,master):
        master_frame = Frame(master,background= 'blue')
        master_frame.grid()
        b1 = Button(master_frame,
                      height=3,text="BUTTON",width=15, font=14,command=lambda parent=master: self.create_top_window(parent))
        b1.grid(row=0, column=0, pady=3, padx=5)
        master_frame.grab_set()

    def create_top_window(self,parent):
        toplevel = Toplevel(parent, bg='red', bd=5, relief=RIDGE)
        toplevel.geometry('350x250')
        toplevel.wm_overrideredirect(True)
#       toplevel.wm_attributes('-type','splash')
        label=Label(toplevel,text='Entry:')
        entry=Entry(toplevel,width=10,font=13)
        button = Button(toplevel, text='close', font=('TkTextFont', 14), command=toplevel.destroy)
        label.grid(row=0,column=0,padx=5,pady=5)
        entry.grid(row=0,column=1,padx=5,pady=5)
        button.grid(row=1, column=0, padx=1, pady=1)
        toplevel.grab_set()

root = Tk()
root.wm_overrideredirect(True)
#root.wm_attributes('-type','splash')
app = GuiApp(root)
root.mainloop()

1 Ответ

0 голосов
/ 01 сентября 2018

Заголовок предоставляется оконным менеджером. Когда вы устанавливаете флаг переопределенной директории, вы просите оконный менеджер игнорировать ваше окно, которое не просто удаляет декорации. Тем не менее, протокол расширенных подсказок диспетчера окон позволяет вам указать предполагаемый тип окна (меню, заставка, диалоговое окно и т. Д.) И предлагает способ подсказки диспетчеру окон, чтобы он мог обеспечить подходящее оформление. В этом случае это звучит как заставка, поэтому вы можете попробовать использовать «заставку» в качестве типа окна:

self.wm_attributes('-type', 'splash')

Атрибут 'type' предоставляется только в том случае, если для оконной системы Tk установлено значение 'x11'. Всплывающая подсказка должна избавить вас от украшения оконного менеджера, хотя это зависит от конфигурации оконного менеджера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...