กล่องข้อความใน Linux (นอกกรอบ)

ฉันกำลังพัฒนาส่วนเสริมสำหรับ Blender โดยใช้ Python ซึ่งจำเป็นต้องขอคำยืนยันจากผู้ใช้ ฉันทำโค้ดที่ใช้งานได้กับ Windows แล้ว บางอย่างเช่นนี้:

from ctypes import *

user32 = windll.user32
Answer = user32.MessageBoxW(None, 'some question here', 'title', 4 | 0x40)

if Answer==6:
    print('You choose YES')
else:
    print('You choose NO')

น่าเสียดาย (และชัดเจน) มันไม่ทำงานใน Linux ฉันอ่านมาว่าการใช้ Tkinter อาจเป็นวิธีแก้ปัญหา แต่ยังไม่ได้ติดตั้งบน Linux และฉันชอบใช้โซลูชันที่ไม่จำเป็นต้องติดตั้งแพ็คเกจมาก่อน

มีคนแนะนำโซลูชัน Linux (หรือข้ามแพลตฟอร์ม) หรือไม่

ขอบคุณ


person Loki    schedule 16.05.2016    source แหล่งที่มา
comment
en.wikipedia.org/wiki/Zenity เรียกมันด้วยกระบวนการย่อย   -  person Padraic Cunningham    schedule 16.05.2016
comment
อาจซ้ำซ้อนกับ Dialog from bash script (อ่านคำตอบทั้งหมด)   -  person n. 1.8e9-where's-my-share m.    schedule 16.05.2016
comment
ตามที่ฉันได้เขียนไปแล้ว ฉันกำลังมองหาโซลูชันที่ไม่จำเป็นต้องติดตั้งแพ็คเกจมาก่อน   -  person Loki    schedule 16.05.2016


คำตอบ (1)


การติดตั้งเครื่องปั่นเริ่มต้นจะไม่รวมไพ ธ อนเริ่มต้นทั้งหมด รายการโมดูล python (ซึ่งรวมถึง tkinter) จะไม่รวมอยู่ในการบรรจุเวอร์ชันของเครื่องปั่นเพื่อจำหน่าย คุณสามารถดูรายการทั้งหมดได้ที่นี่ . คุณอาจสนใจวิธีการจัดการหน้าต่างบางวิธีที่มีให้ใช้งาน เช่น invoke_props_dialog ที่ใช้ใน ตัวอย่างนี้ แต่โดยทั่วไปแล้วสิ่งเหล่านี้จะไม่เป็นวิธีที่คุณควรดำเนินการ

มีสองวิธีทั่วไปในการรับอินพุตตัวแปรจากผู้ใช้ ประการแรกคือคุณสมบัติที่ผู้ใช้สามารถปรับเปลี่ยนได้ตามที่พวกเขาเลือก ซึ่งจะถูกใช้เมื่อมีการเรียกใช้สคริปต์ของคุณ อีกวิธีหนึ่งคือผ่านคุณสมบัติตัวดำเนินการ

คุณสมบัติสามารถ เพิ่ม ให้กับบางคุณสมบัติได้ คลาสที่มีอยู่และแสดงใน แผง เพื่อให้ผู้ใช้แก้ไข

การดำเนินการที่ทำในเครื่องปั่น เช่น เมื่อผู้ใช้กดปุ่มบางปุ่ม คลิกปุ่ม หรือเลือกรายการเมนู จะดำเนินการโดยผู้ปฏิบัติงาน เป็นเรื่องปกติที่ตัวดำเนินการจะมีคุณสมบัติที่เปลี่ยนแปลงผลลัพธ์ของการกระทำนั้น ตัวอย่างเช่น เมื่อคุณเพิ่ม UV Sphere แล้วกด F6 คุณสามารถปรับเรขาคณิตของทรงกลม รวมถึงขนาดและตำแหน่งของทรงกลมได้ คุณสมบัติเหล่านี้ยังมีอยู่ที่ด้านล่างของขอบเขตชั้นวางเครื่องมือ

ตัวเลือกยูวีสเฟียร์

ดังที่แสดงในตัวอย่างนี้ คุณสามารถ เพิ่มคุณสมบัติให้กับคลาสของผู้ปฏิบัติงานของคุณ และผู้ใช้สามารถปรับเปลี่ยนคุณสมบัติเหล่านี้ได้เช่นเดียวกับในตัวอย่าง UV Sphere คุณยังสามารถระบุค่าที่จะใช้เมื่อคุณวางปุ่มเพื่อให้ผู้ใช้คลิก -

def draw(self, context):
    row = self.layout.row()
    row.operator('object.example_operator', text='go with 6').choice = 6
person sambler    schedule 16.05.2016