Я пытаюсь использовать один из модулей Python gui для получения имени пользователя и пароля пользователя Twitter:
Вот моя первая попытка (с использованием easygui):
import easygui
username = easygui.enterbox("Enter your Twitter username")
password = easygui.passwordbox("Enter your Twitter password")
Вот моя вторая попытка (с использованием tkinter):
import tkinter as tk
from tkinter import simpledialog
application_window = tk.Tk()
application_window.attributes("-topmost", True)
username = simpledialog.askstring("Input", "What is your Twitter username?")
password = simpledialog.askstring("Input", "What is your Twitter password?", show = "*")
application_window.destroy()
В настоящее время ни один графический интерфейс не отображается автоматически. Вместо этого на моей панели задач Windows появляется значок Python, и мне нужно щелкнуть значок, чтобы появился графический интерфейс. Есть ли какой-нибудь программный способ заставить графический интерфейс автоматически всплывать? Или, может быть, есть другой модуль, который я могу использовать для этого?
вы используете машину с Windows?
Модуль simpledialog создает новое окно верхнего уровня, которое вы хотите вывести, а не корневое окно.
simpledialog
работает лучше всего, когда у вас уже работает графический интерфейс tkinter. Я думаю, вам было бы намного лучше с easygui
, поскольку он фактически использует экземпляр tkinter Tk:
import easygui
fieldNames = ["Username", "Password"]
values = easygui.multpasswordbox("Enter Twitter information", "Input", fieldNames)
if values:
username, password = values
else:
# user pushed "Cancel", the esc key, or Xed out the window
username, password = None, None
print(username, password)
Если это не сработает, у easygui есть ловушка, позволяющая использовать самый верхний трюк:
import easygui
fieldNames = ["Username", "Password"]
mb = easygui.multpasswordbox("Enter Twitter information", "Input", fieldNames, run=False)
mb.ui.boxRoot.attributes("-topmost", True)
mb.run()
if mb.values:
username, password = mb.values
else:
# user pushed "Cancel", the esc key, or Xed out the window
username, password = None, None
print(username, password)
или просто создайте свой собственный диалог.
Спасибо тебе за это. к сожалению, у меня такая же проблема с easygui. вместо того, чтобы всплывать автоматически, на панели задач появляется логотип Python, и мне нужно щелкнуть по нему, чтобы открыть диалоговое окно.
Вы можете сделать это довольно легко, используя PySimpleGUI. Есть несколько способов. Одна из них - встроенная функция PopupGetText. Это создаст 2 окна, одно для имени пользователя, другое для пароля. Или вы можете создать свой собственный макет, который запрашивает и то, и другое в одном окне.
import PySimpleGUI as sg
username = sg.PopupGetText('Enter your username')
password = sg.PopupGetText('Entery your password', password_char='*')
layout = [[sg.Text('Username'), sg.Input()],
[sg.Text('Password'), sg.Input(password_char='*')],
[sg.OK()]]
button, (username, password) = sg.Window('Login').Layout(layout).Read()
опубликованный вами код не производит такой же
error
.